package com.tfjybj.itoo.exam.provider.service;

import com.dmsdbj.itoo.tool.base.service.BaseServicePlus;
import com.dmsdbj.itoo.tool.business.ItooResult;
import com.github.pagehelper.PageInfo;
import com.tfjybj.itoo.exam.entity.StudentEntity;
import com.tfjybj.itoo.exam.model.StudentModel;
import com.tfjybj.itoo.exam.template.ScreenClassStu;

import java.util.List;


/**
 * StudentService接口
 * student表
 *
 * @author 杨江涛
 * @version 2.0.0
 * @since 2.0.0 2018-11-15 10:35:56
 */
public interface StudentService extends BaseServicePlus<StudentEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据姓名模糊查询student
     *
     * @param name  姓名
     * @param pageNo   页码
     * @param pageSize 页数
     * @return 模糊查询的student
     * @author 杨江涛
     * @since 2.0.0 2018-11-15 10:35:56
     */
    PageInfo<StudentEntity> queryByLikeName(String name, Integer pageNo, Integer pageSize);


    //endregion

    /* **********************************以下为非模板生成的内容********************************* */
    /**
     * 根据姓名模糊查询student
     * @param code 姓名
     * @return 根据学号查询学生所有信息
     * @author 杨江涛
     * @since 2.0.0 2018-11-19 16:34:50
     */
    List<StudentModel> findByCode(String code);


    /**
     * 根据学生Id查询学生信息
     *
     * @param id 数据
     * @return 根据学生Id查询学生信息
     * @author 樊建华
     * @since 2018年11月22日11:29:43
     */

    StudentModel findStudentById(String id);

    /**
     * 根据行政班id查询对应的所有学生信息
     * @param classId 行政班id
     * @return  根据行政班id查询对应的所有学生信息
     * @author 杨江涛
     * @since 2018-11-28 20:23:10
     */
    List<StudentModel> findByClassId(String classId);


    /**
     * 根据行政班id和考试开始时间查询不在考试的所有学生
     *
     * @param classId 行政班id
     * @param startTime 考试开始时间
     * @param stuNameOrStuCode 模糊查询学生的模糊值
     * @param endTime 考试结束时间
     * @since 2018-12-7 20:02:20
     * @return List<ScreenClassStu>
     * @author 马莹
     */
    List<ScreenClassStu> queryNoExamination(String classId, String startTime, String stuNameOrStuCode, String endTime);

    /**
     * 根据姓名、学号、班级名称模糊查询对应的学生信息及班级名称
     * @param searchInfo 行政班id
     * @return 对应的学生信息及班级名称
     * @author 杨江涛
     * @since 2018-12-8 11:07:40
     */
    List<StudentModel> findClassStudent(String searchInfo);



    StudentEntity findByStudentNo(String studentNo);

    /**
     * 根据上课班id查询该班所有学生
     *
     * @param teachClassId 上课班id
     * @return 学生集合
     * @author 郭满亮
     * @since 2019年2月27日16:44:34
     */
    List<StudentEntity> getStudent(String teachClassId);
    /**
     * 根据学号查询学生id
     * @param codeId 学号
     * @return 学生id
     * @author 郭满亮
     * @since 2019年2月28日10:19:46
     */
    ItooResult getCodeById(String codeId);
}
